home *** CD-ROM | disk | FTP | other *** search
- ============
- VERSION 44.0
- ============
-
- Kriton Kyrimis updated ixprefs.
-
- David Zaroski updated ixtrace.
-
- Fixed link count for directories. Thanks to Norbert Pueschel.
-
- umask implemented for for open() and mkdir(). Thanks to Norbert Pueschel.
-
- Added muFIBB_SET_GID, which will be implemented in the next version
- of MultiUser. The old way of handling setgid was confusing and even
- potentially dangerous. Thanks to Norbert Pueschel.
-
- Added the translation unix sticky bit -> AmigaDOS h bit. This one is
- more for aestaethical reasons, as the h bit is no longer supported in 3.x.
- Thanks to Norbert Pueschel.
-
- Added a field 'void *u_user;' near the beginning of the user struct which
- everybody is free to (ab)use. It can be handy to store task private data
- in the user struct, at least, I had to use it recently.
-
- Added an ix_amiga.h header, which will contain all amiga specific functions
- and macros in ixemul.library and libc.a, together with a description.
-
- Profiling has been enhanced. Ixprefs adds a new profiling preference:
- either take samples only while your program is running and the PC is within
- your program, or take samples while your program is running and if the PC
- is outside your program code (e.g. in ixemul or in intuition.library), use
- the last function your program entered before calling ixemul or whatever,
- or always take samples, even if other programs are running. Again, the
- last recorded function gets the hit in those cases.
-
- An array of 100 longs to store the A4 register of shared libraries has been
- added to the user struct. This array can be easily increased in future
- releases, should the need arise. The first 20 slots are for your own free
- use, the other slots should be registered. See the file REGISTRY in the
- ixemul source distribution for more details.
-
- Fixed yet another path bug. Running a shell script that's placed somewhere
- in your PATH from 'make' failed, unless the filename of the script was
- absolute.
-
- Added vfork_setup_child to libc.a. This is a wrapper intended to make life
- just a little bit easier for those who need to use the vfork2()/vfork_resume()
- trick. It replaces the old 'ix_resident()/ix_get_vars2()' pair.
-
- Fixed more problems with the routines that start a shell script. This time
- problems with symbolic links have been fixed.
-
- Fixed problems when parsing a pathname of a shell script, preventing the
- execution of that script.
-
- Replaced the stdio-sources by the NetBSD 44.0 versions, which incidentally
- fixed the broken fgetpos function. This change also adds printf() and scanf()
- support for the 'long long' datatype.
-
- Added support for the O_CASE open() flag: this will open an existing file
- only if the filenames match using a case-sensitive comparison.
-
- fstat() didn't compensate the file time for the current timezone offset.
-
- Ixemul now supports the 68010 CPU. Thanks to Pascal Eeftinck for pointing
- out that the 68010 uses a 68020-like stackframe.
-
- Build the version.[ch] files in the build directory instead of in the
- source directory.
-
- Fixed fchdir().
-
- Changed the machine name as returned by uname() to "m68k". Thanks to Lars
- Hecking for this.
-
- O_ASYNC I/O is now partially supported: select() will test for this
- situation.
-
- /dev/tty is now translated to console:.
-
- Implemented pseudo-terminals support using the FIFO device.
-
- Many, mostly small, changes to become more NetBSD compatible. Where
- possible, I've replaced the old sources with the NetBSD 1.1 sources.
-
- The select() function has been improved: it is now much faster and works
- much better.
-
- Using F_SETFL with fcntl() failed if the file wasn't a regular file. It now
- also works for pipes and sockets.
-
- Requesters that are from ixemul.library or ixnet.library now have the name
- of the library as their title, so that you can see that they are from the
- library, and not from the application. Thanks to Udo Schnurpfeil for
- suggesting this.
-
- The tty database functions unfortunately slipped through and weren't
- included with 43.1. They are back in 44.0.
-
- Implemented mmap() and friends. Of course, any mmap feature that actually
- requires a MMU will return an error. But if mmap() is used to load a file
- into memory, then it works fine.
-
- ============
- VERSION 43.2
- ============
-
- Applied patch from Kamil Iskra to improve ixemul stack extension
- handling.
-
- ============
- VERSION 43.1
- ============
-
- Ixemul no longer uses async writes. All I/O is now synchronous. This
- allowed me to remove several Disable()/Enable() pairs, and actually made
- ixemul faster. Apparently the overhead in handling async I/O was
- substantial.
-
- Applied patches from Jeff Shepherd fixing various problems in the
- ixnet.library. Among them improved AS225 passwd handling.
-
- Moved the resolver functions out of ixnet.library into libc.a. All programs
- that used these functions will have to be recompiled. Very few programs use
- these functions, and since they are really higher level functions and do
- not belong in a low level library like ixnet, I've moved them.
-
- Also moved tty database functions (getttyent() and friends, ttyname() and
- ttyslot()) to libc.a, for much the same reason.
-
- Added the NetBSD DB sources to libc.a and removed the hacked versions from
- ixnet.
-
- Replaced various headers with the NetBSD versions. Important for certain
- socket-related ioctl defines that were incorrect in the old headers.
-
- Added ptrace(GETA4, pid, 0, 0) to obtain the value of the a4 register if
- this executable was compiled with -fbaserel or -resident. Needed by gdb to
- find out where the data section is.
-
- Added ptrace(GETEXENAME, pid, 0, 0) to obtain the name of the current
- executable. Useful in scripts that start with '#!/bin/sh' or something
- similar. 'argv[0]' as seen by sh is the name of the script, but if you want
- to get the pathname of 'sh' itself, you can use this ptrace call.
-
- Added setlocale() and ctermid() to libc.a.
-
- It is now possible to unlink() a file that is owned by another process
- (just like Unix). Gcc uses this to remove temporary files that are actually
- owned by cpp (or as). Of course, on the Amiga this is implemented as a
- delayed delete, i.e. a flag is set in the 'struct file' to tell ixemul to
- delete the file when it is closed by the owner process.
-
- Added support for a root ('/') directory. This will only work for programs
- that use ixemul.library. So if you start pdksh, 'cd' to the root (cd /) and
- use the AmigaDOS command 'list' to view this directory, then you won't get
- what you expect. If you use the Unix ls command however, then you will see
- all the volumes that you have as top level directories.
-
- Removed an old hack in __wait_packet.c that interfered with Ctrl-F
- handling.
-
- Fixed a bug in fnctl(), F_SETFL.
-
- Added AFS, AFSFloppy and PFS support. Many thanks to the AFS author,
- Michiel Pelt, who provided me with the necessary technical information, and
- to Kriton Kyrimis for giving some very useful suggestions.
-
- Added MultiUserFileSystem support, contributed by Mike Krings. Thanks Mike!
-
- Added new function ix_warning: similar to ix_panic, but allows the user to
- choose between "Continue" and "Abort". This to work around a case like:
-
- for (;;) crypt();
-
- where one couldn't break out of the program because the requester kept
- popping up.
-
- Fixed -mstackcheck support and fixed buggy baserel-stackextend support.
-
- The call socket(AF_UNIX, SOCK_STREAM, 0) no longer crashes if ixnet.library
- is not installed.
-
- Reorganized Makefiles. I've removed the option to compile each source
- separately, instead they are always catenated together. Also, 'make' no
- longer starts itself two more times in order to make the library. I've
- used GNU make wizardry to let 'make' figure out all the targets by itself.
-
- Sigsetjmp and siglongjmp were broken. Fixed.
-
- Replaced the old man pages with the new NetBSD manual pages in the original
- troff form.
-
- Replaced the nice() stub in ix_stub with nice.c from NetBSD.
-
- Removed a Delay(100) that was called just before a vfork()ed program finally
- terminated.
-
- Made h_errno a global variable like errno.
-
- At several places in the library the errno variable was reset to 0.
- However, the library should (almost) never set errno to 0. This caused
- problems with the 'ping' program, where recvfrom set errno to 4, but the
- library changed it back to 0 before 'ping' got to see it.
-
- Now sets st_uid and st_gid from a 'stat' structure to the effective UID and
- GID. Some programs tested these fields and they failed when using
- networking support. These fields used to be 0.
-
- Reread the global environment variables only when 1) a new program is
- started, and 2) the ENV: directory has been changed (i.e., a new setting
- was added to ENV:). ENV: used to be read every time a program was started,
- whether it was needed or not.
-
- Given the shell script s.sh in /ram/t:
-
- #!/bin/sh
- /bin/echo $0
-
- 'sh /ram/t/s.sh' produced '/ram/t/s.sh', while typing '/ram/t/s.sh' from
- within the pdksh shell produced 'Ram:t/s.sh'. Fixed.
-
- Removed a dubious CurrentDir() to a *file* instead of a directory. While
- this is apparently supported for the standard AmigaOS filesystems, not all
- third-party filesystems supported this.
-
- When you try to use a >68020 ixemul.library on a 68000 Amiga, you now get a
- decent message instead of a crash.
-
- ============
- VERSION 43.0
- ============
-
- Integrated Jeff Shepherd's networking code. If ixnet.library is installed,
- then ixemul.library will use the networking functions from the
- ixnet.library, instead of the default dummy implementation. Ixnet.library
- works with AS225 and with AmiTCP. It supports both clients and daemons.
- A program that uses networking functions is completely shielded from the
- AS225 and AmiTCP differences by ixnet.library. That library will take care
- of all the details for you. That means that there is no longer any need to
- provide two different binaries, one for AS225 and one for AmiTCP.
- Furthermore, it is relatively easy to add support for other network
- packages. Thanks, Jeff!
-
- Added stackchecking and extension code, thanks to Matthias Fleischer.
-
- Finalized GDB support.
-
- ============
- VERSION 42.1
- ============
-
- Fixed bugs when running non-ixemul programs from tools like pdksh or make.
- You could get Enforcer hits and the Ctrl-C support also crashed the Amiga.
-
- Use the NetBSD code for the system() function instead of using the Amiga
- kernel function SystemTagList. This was the cause of several
- incompatibilities when porting Unix programs.
-
- Improved termios support (added OPORT and ONLCR flags and the INLCR flag).
-
- Fixed ptrace handling. Almost none of Leonard's code has survived, I used a
- completely different method.
-
- Fixed a problem where the name of the current directory, as is visible
- by the shell, wasn't changed when a program terminated and ixemul reset the
- current directory to its original place.
-
- Improved performance somewhat by no longer going through address 4 to get
- to the ExecBase structure. Instead, it's copied once to the SysBase
- variable, and thereafter only that variable is used. The Enforcer manual
- warned against accessing address 4 too often, and ixemul.library did that
- a lot.
-
- Also improved performance by fixing a busy wait. At one point in the
- ixemul, the program cannot continue until a context switch has taken place.
- So ixemul waits until the dispatch count of ExecBase has changed,
- indicating that a context switch has taken place. By installing a small,
- high priority (9) task with body "for (;;) Wait(1 << 31);" and signalling
- that task whenever a context switch is needed, I was able to circumvent the
- busy wait loop. Because of the high priority of the Task, a context switch
- would take place immediately. The task itself goes back to sleep at once,
- so there is no time lost there.
-
- ============
- VERSION 42.0
- ============
-
- Installed patch in arith.c to work around bug in IEEEDPCmp. If the first
- 32 bits of both doubles are equal, and both doubles are negative, then
- the result can no longer be trusted. Discovered by Bart Van Assche.
-
- Ixtrace has been updated to recognize all 42.0 syscalls, thanks to David
- Zaroski.
-
- Ctrl-C handling worked with KingCON, but not with the standard AmigaDOS
- CON-handler (since I use KingCON I never noticed this until it was pointed
- out to me by Fred Fish :-). This has now been fixed. See the comments in
- library/__read.c for more information.
-
- Added the uname() function, written by Lars Hecking.
-
- The termios code now properly recognizes the ICRNL input flag for '\r' to
- '\n' translation.
-
- Fixed a bug in the fcntl() function (actually, in the fcntl.h and
- sys/fcntl.h headers).
-
- Moved several static variables to user.h, so they are now process-specific.
-
- Added profiling support. It was always there, but it was never actually
- used.
-
- The write() function writes its buffer line-by-line instead of in one big
- chunk if the filehandle is the handle of an interactive stream (for
- example, a console window). This allows the user to interrupt the output by
- pressing a key and it also allows the use of Ctrl-C to break the program.
- In previous versions you were unable to stop the output if you forgot to
- redirect it to a file. E.g., 'cat /libs/ixemul.library' would essentially
- take over the computer.
-
- Changed default stack size handling when a new process is launched. It is
- either the value of the environment variable IXSTACK, or it inherits the
- size from its parent, but if that size is less than 16384, it uses a stack
- of 16384 bytes instead.
-
- Replaced ixconfig by ixprefs (written by Kriton Kyrimis).
-
- Integrated the partial ptrace support from Leonard Norrgard.
-
- Removed the gnulib, gnulib-68881 and gnulib-soft-float directories.
-
- Compiled with -Wall and fixed (nearly) all warnings. Some warnings are
- inevitable and cannot be avoided. -Wall already caught one illegal memory
- access bug in __Close()!
-
- Added functions to set and get ixemulbase-private information. This will
- break older ixconfig's but is much cleaner. Nearly all of the ixemulbase
- structure is now off-limits and liable to change without notice! You are
- warned! In fact, the structure has been changed already. The library will
- complain if a program called 'ixconfig' tries to use it to prevent the user
- from using an old ixconfig with the new library.
-
- Removed several arithmetic functions dealing with 'long long' types. They
- didn't belong in the library, link with libgcc.a instead. Also removed some
- arithmetic functions that are never called because they are compiled
- directly in 68000 assembly. Don't know why they were ever added.
-
- Fixed gen_glue.c so that it no longer generates glue for obsolete functions.
-
- Removed ssystem(). ssystem() was the precursor of vfork/execve, and is no
- longer needed. NOTE: it is still used in gcc. But this fails spectacularly
- once you use Ctrl-C! Delete gcc and replace it by gccv, this one uses
- vfork/execve as it should and works perfectly.
-
- ixemul.library now uses the new-style inlines.
-
- qsort() is now re-entrant and no longer uses the horrible Semaphore hack.
-
- Moved general/fts.c to the static library. These directory-tree traversal
- functions are rarely, if ever used, so they belong in libc.a and not in a
- shared library.
-
- Reorganized the Makefiles. The makefiles now use several GNU make-only
- features to make them smaller and easier to maintain. 'make clean' and
- 'make clobber' now work correctly. It is also no longer nessecary to add
- the -srcdir option to 'sh configure' in order to create valid Makefiles.
-
- The top level Makefile contains the line 'export CATENATE = 1'. If this
- line is present, the compilation speed is greatly improved by catenating
- several small C-sources together into one bigger C-source, and then the
- bigger one is compiled. By commenting this line each separate source is
- compiled. Note that besides improving compilation speed, the library also
- gets smaller as the compiler can now determine whether a call can be made
- relative or should remain absolute.
-
- Fixed a symlink-bug (ln -s /ram/t created a symlink to /am/t, removing the
- first character of the volumename).
-
- Moved ixtrace to the new utils directory, together with the small ixrun
- utility. ixrun can be used to run Amiga batch files from /bin/sh (just put
- ';!ixrun' at the second line (!) of the batch file). Also added manual
- page for ixrun.
-
- Cleaned up the static directory: removed xmalloc.c and alloca.c as they do
- not belong in the standard C library. Also replaced the ctime.c source by
- the version from elsie.nci.nih.gov, which is the official version used by
- NetBSD and Linux, among others. Finally, errlst.c and siglist.c now just
- include their counterparts in the general directory.
-
- The version information is placed in the version.in file in the
- top-level directory. The version.c and version.h sources are created from
- this file.
-
- The print_base_size.c and print_user.c sources have been replaced by
- create_header.c, which creates a header containing a few defines that are
- used by start.s and trap.s. These used to be hard-coded, but now they are
- generated, preventing future mistakes.
-
- Added the raise function. For some reason, raise.c was never compiled into
- the library. It is now.
-
- Removed ALL sources that were not needed for compilation.
-
- Added timezone handling. The timezone databases from elsie.nci.nih.gov are
- used and installed in etc:zoneinfo. The new ixtimezone utility should be
- added to the startup-sequence. This utility determines the correct offset
- for Greenwich Mean Time. Read the manual page (Yes! Documentation at last!)
- for more information.
-
- Merged the ixpipe-handler into the ixemul-distribution. It has been placed
- in the utils-directory.
-
- Added hack to allow ixemul to run AmigaDOS scripts without breaking them
- when run from the AmigaDOS shell. The problem is that the ".KEY" string
- must be at the first line of the script, while ixemul also looks for "#!"
- and ";!" in the first line. If a file starts with ".KEY", ixemul will now
- skip the first line, before checking for "#!" and ";!".
-
- ============
- VERSION 41.4
- ============
-
- Integrated patches from Hans Verkuil that fix CTRL-C handling, fix another
- signal bug, fix problem with "rm -f", prepare for proper timezone handling,
- and remove '@' hack in argument parsing.
-
- Applied patch from Kamil Iskra to avoid incompatibility between ixemul
- and the popular KingCON 1.3. This is KingCON's fault because it makes
- invalid assumptions about the nature of reply port contained in "dp_Port"
- of packets sent to it. Also applied patch (duplicated in Hans' patches)
- to crt0.c that fixes bug where the revision requester was not working
- properly if the current revision is 0.
-
- Applied patch from Rask Lambertsen (duplicated in Hans' patches) that makes
- ixemul.library open "CONSOLE:" instead of "*".
-
- Added implementation from Kriton Kyrimis for srand48, seed48, lcong48,
- lrand48, nrand48, mrand48, jrand48, drand48, and erand48.
-
- Added "#include <sys/types.h>" to <dirent.h> to be more compatible
- with most current systems that do this inclusion for you. This change
- should be backwards compatible with code that does the inclusion
- explicitly. Suggested by Lars Hecking.
-
- Changed prototype in <unistd.h> for getpgrp() to take a pid_t argument,
- which matches the implementation in library/getcrap.c. Suggested by
- Lars Hecking.
-
- Made change to <math-68881.h> in pow() so that if x<0 the code does
- log(-x) rather than log(x). Suggested by Thomas Radtke and implemented
- by Lars Hecking.
-
- Disable definitions of F_GETLK, F_SETLK, F_SETLKW, F_RDLCK, F_UNLCK, and
- F_WRLCK in <fcntl.h> since they are unimplemented and thus might have misled
- autoconfiguration schemes into thinking they were available. Also fix
- ixtrace.c so it will still compile without these defined. Suggested by
- Robert Ramiega.
-
- Integrated patch from Joop van de Wege (duplicated in Hans' patches) for
- setting up fpu on 68060.
-
- ============
- VERSION 41.3
- ============
-
- Updated DBL_MIN and DBL_MAX in float.h to include one additional digit
- of precision. Enclose negative constants in parens to avoid unexpected
- conversion to subtraction via cpp macros.
-
- Applied patch from Hans Verkuil to fix serious bug in signal handling,
- to reset all signal handlers after an execve, except for those which are
- being ignored (SIG_IGN).
-
- Applied patch from Joop van de Wege to trap.s to set 68881 rounding mode
- back to truncation instead of "round to nearest", as required by the
- ANSI C standard which specifies truncation.
-
- Integrated ixtrace into source tree and arranged for it to be built and
- installed.
-
- ============
- VERSION 41.2
- ============
-
- Added "#include <sys/types.h>" to <sys/stat.h> to be more compatible
- with most current systems that do this inclusion for you. This change
- should be backwards compatible with code that does the inclusion
- explicitly.
-
- Changed version string to be style guide compliant. Also arranged that
- version.o gets linked in, since it has the $VER: string and is otherwise
- unreferenced by any ixemul.library code.
-
- Merged patches from Hans Verkuil to fix execve environment passing,
- always open the console for stderr if no other file handle is provided,
- move AmigaDOS style filename matching into glob(), and fix a small problem
- with "open(NULL,...) that caused enforcer hits.
-
- ============
- VERSION 41.1
- ============
-
- A 68040 version of the library with soft floating point is now built,
- since there are apparently systems that use the versions of the 68040
- without FPUs.
-
- Fixed crt0 files to use "jra _ENTRY" as first instruction rather than
- "jmp pc@(_ENTRY)" which was getting assembled by gas 2.5.2 as a 68020+
- instruction. Note "jmp pc@(_ENTRY:W)" seems to generate the 68000
- instruction but a bad jump offset. Added corresponding change to
- execve.c to recognize ixemul using executables with this change.
-
- Fixed cpu.h, machdep.c, trap.s to avoid pc relative assembly instruction
- that was getting compiled as 68020+ instruction and causing crashes on
- 68000 machines.
-
- Fixed numerous files that did "#include" of "DEFS.H" rather than "defs.h".
- This is an innocuous bug on the Amiga, which is case independent, but
- it kills cross compilations.
-
- ============
- VERSION 41.0
- ============
-
- No significant changes since the 40.6 beta release other than the
- mechanism (and macros) for building debug versions has been cleaned
- up and the version number has been bumped to 41.0.
-
- Did include the cat'able man pages back in the source tree, but no
- work has been done yet to track down the sources for the man pages
- and arrange for them to be properly integrated into the tree and
- have the cat'able versions generated from those sources.
-
- ============
- VERSION 40.6
- ============
-
- Many bugs have been fixed since the 40.4 release, including a serious
- one that was causing memory corruption and many enforcer or mungwall
- hits.
-
- Network support has been reintegrated into the library, however it is
- still mostly untested. In particular, many functions are only
- available for static linking from the libnet.a library. By the next
- release, it is expected that libnet.a will be incorporated in libc.a.
-
- Work is underway to merge the best features from at least two
- different strains of the ixemul library. Many more changes are
- expected by the 41.0 release.
-
- An environment variable called "IXSTACK" is now used to control the
- stack size of programs started by system(). If the current stack is
- smaller than the value in IXSTACK, the stack is raised to the value
- specified in IXSTACK. So IXSTACK is a minimum value.
-
- Automatic stack checking, with a requestor if the stack overflows, is
- available for executables compiled with a version of gcc that supports
- the -mstackcheck option. This also requires linking with new crt0 and
- libc.a.
-
- Automatic stack extension as necessary is available for executables
- compiled with a version of gcc that supports the -mstackextend option.
- This also requires linking with new crt0 and libc.a.
-